package com.shun.upms.action;


import com.shun.common.log.LogType;
import com.shun.common.R;
import com.shun.common.log.annotation.ShunLog;
import com.shun.upms.dto.SysAdminDeptDto;
import com.shun.upms.service.ISysAdminDeptService;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 系统内部机构表 前端控制器
 * </p>
 *
 * @author clever
 * @since 2021-10-03
 */
@Slf4j
@RestController
@RequestMapping("/upms/dept/v1/")
public class SysAdminDeptAction {

    @Autowired
    private ISysAdminDeptService deptService;

    /**
     * 获取部门的名称和ID的数据列表
     * @return
     */
    @PostMapping("/getNameAndId")
    @ApiOperation(value = "获取部门名称和ID的信息")
    public R getNameAndId(){
        log.debug("获取用户名称和ID的列表信息！");
        return deptService.getDeptNameAndId();
    }

    /**
     * 获取部门树
     * @return
     */
    @PostMapping("/getDeptTree")
    @ApiOperation(value = "获取部门的树形列表数据")
    public R getDeptTree(){
        log.debug("获取部门的树形列表数据！");
        return deptService.getTreeDepts();
    }

    /**
     * 新增部门
     * @return
     */
    @PostMapping("/addDept")
    @ApiOperation(value = "新增部门")
    @ShunLog(title = "部门",logType = LogType.INSERT)
    public R addDept(@RequestBody SysAdminDeptDto dto){
        log.debug("新增部门,dto:{}",dto);
        return deptService.addDept(dto);
    }

    /**
     * 编辑部门
     * @return
     */
    @PostMapping("/editDept")
    @ApiOperation(value = "编辑部门")
    @ShunLog(title = "部门",logType = LogType.UPDATE)
    public R editDept(@RequestBody SysAdminDeptDto dto){
        log.debug("编辑部门,dto:{}",dto);
        return deptService.editDept(dto);
    }

    /**
     * 部门校验
     * @param simpleName
     * @return
     */
    @GetMapping("/checkDeptSimpleName")
    @ApiOperation(value = "部门简称的唯一性校验")
    public R checkDeptSimpleName(String simpleName){
        return deptService.checkDeptSimpleName(simpleName);
    }

    /**
     * 部门删除
     * @param deptId
     * @return
     */
    @GetMapping("/delDept/{deptId}")
    @ApiOperation(value = "部门删除")
    @ShunLog(title = "部门",logType = LogType.DELETE)
    public R delDept(@PathVariable("deptId") String deptId){
        return deptService.delDept(deptId);
    }
}

